package cn.tedu.lucky.draw.server.job.scheduler;

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.JobParametersInvalidException;
import org.springframework.batch.core.explore.JobExplorer;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;
import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;
import org.springframework.batch.core.repository.JobRestartException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ActivityScheduler {

    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private Job activityJob;

    @Autowired
    private JobExplorer jobExplorer;

    /**
     * 第一个属性 表示秒 ，当前表示0秒，取值范围0-59
     * 第二个属性 表示分 ，当前表示1分，取值范围0-59
     * 第三个属性 表示时 ，当前任意时刻，取值范围0-23，
     * 第四个属性 表示日， 当前任意日期，取值范围1-31
     * 第五个属性 表示月， 当前任意月份，取值范围1-12
     * 第六个属性 表示周， 当前任意周，取值范围1-7，1表示星期日，7表示星期六
     *
     * 2024年10月31日 星期六 晚上 10点每分钟执行一次
     */
    @Scheduled(cron = "1-30 1-2 8/3 26 * ? ") // 每分钟执行一次
    public void runJob() throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, JobParametersInvalidException, JobRestartException {
        JobParameters jobParameters = new JobParametersBuilder(new JobParameters(), jobExplorer)
                .getNextJobParameters(activityJob)
                .toJobParameters();
        jobLauncher.run(activityJob, jobParameters);
    }
}
